home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / prog_gen / qshade.zip / TOOLS.PAS < prev    next >
Pascal/Delphi Source File  |  1994-06-04  |  5KB  |  249 lines

  1. (*
  2.   ──────────────────────
  3.   String Tools unit v1.1
  4.   ──────────────────────
  5.   (c)1994   Rsc Research
  6.  
  7.   Write me at:     or on Compuserve
  8.   ────────────     ────────────────
  9.   Cédric Rime           100340,2736
  10.   Dixence 21
  11.   1950 Sion
  12.   Switzerland
  13.  
  14.  
  15.   This program is entered as Shareware.
  16.   If you find it useful, a small donation would be appreciated.(then i can take some English lessons!!!)
  17.  
  18.   Feel free to incorporate the code into your own programs.
  19.  
  20. *)
  21.  
  22.  
  23. UNIT tools;
  24. INTERFACE
  25. USES crt,dos;
  26.  
  27. CONST KeyUP=72;
  28.       KeyDOWN=80;
  29.       KeyRIGHT=77;
  30.       KeyLEFT=75;
  31.       KeyHome=71;
  32.       KeyEnd=79;
  33.       KeyPGup=73;
  34.       KeyPGDown=81;
  35.       KeyEsc=27;
  36.       KeyEnter=13;
  37.       KeyBackSpace=8;
  38.       KeyTab=9;
  39.  
  40. FUNCTION rval(st:STRING):real;
  41. FUNCTION rstr(r:real):STRING;
  42. FUNCTION ival(st:STRING):INTEGER;
  43. FUNCTION istr(r:INTEGER):STRING;
  44. FUNCTION toupper(st:STRING):STRING;
  45. FUNCTION tolower(st:STRING):STRING;
  46. FUNCTION from(st:STRING;x:BYTE):STRING;
  47. FUNCTION right(st:STRING;x:BYTE):STRING;
  48. FUNCTION left(st:STRING;x:BYTE):STRING;
  49. FUNCTION spc(w:BYTE):STRING;
  50. FUNCTION xcopy(nom,nom2:STRING):BOOLEAN;
  51. FUNCTION xerase(nom:STRING):BOOLEAN;
  52. FUNCTION xrename(nom,nom2:STRING):BOOLEAN;
  53. FUNCTION exist(nom:STRING):BOOLEAN;
  54. FUNCTION stringtonumber(y:STRING):real;
  55. FUNCTION Hex2Int(h:STRING):LongInt;
  56.  
  57. IMPLEMENTATION
  58.  
  59. FUNCTION Hex2Int(h:STRING):LongInt;
  60. CONST v='0123456789ABCDEF';
  61. VAR   q:INTEGER;
  62.       m:LongInt;
  63.       res:LongInt;
  64.       s:STRING;
  65. BEGIN
  66. s:=toupper(h);
  67. m:=1;res:=0;
  68. FOR q:=Length(s) DOWNTO 1 DO
  69.     BEGIN
  70.      res:=res+(Pos(Copy(s,q,1),v)-1)*m;
  71.      m:=m SHL 4;
  72.     END;
  73. hex2int:=res;
  74. END;
  75.  
  76. FUNCTION StringToNumber(y:STRING):real;
  77. VAR q,w,e:INTEGER;
  78.     r:real;
  79.     a,s:STRING;
  80.     l:BYTE;
  81. CONST Inum='0123456789';
  82.  
  83. PROCEDURE clean1;
  84. VAR q:INTEGER;
  85. BEGIN
  86. FOR q:=1 TO l DO IF (Pos(Copy(y,q,1),inum)>0) AND (Pos(Copy(y,q,1),inum)<11) THEN a:=a+Copy(y,q,1);
  87. END;
  88.  
  89. PROCEDURE clean2;
  90. VAR q,w:INTEGER;
  91. BEGIN
  92. w:=0;
  93. FOR q:=1 TO l DO IF (Pos(Copy(y,q,1),inum)>0) AND (Pos(Copy(y,q,1),inum)<11) THEN a:=a+Copy(y,q,1)
  94.     ELSE IF (Copy(y,q,1)='.') AND (w=0) THEN BEGIN a:=a+Copy(y,q,1);w:=1;END;
  95. END;
  96.  
  97. BEGIN
  98. l:=Length(y);IF l<1 THEN BEGIN stringtonumber:=0;EXIT;END;
  99. a:='';
  100. IF (Pos('.',y)>0) AND (Pos('.',y)<=l) THEN
  101.    BEGIN {float number}
  102.    clean2;
  103.    END ELSE
  104.    BEGIN {integer number}
  105.    clean1;
  106.    END;
  107. IF a='.' THEN a:='0';
  108. IF Copy(a,Length(a),1)='.' THEN a:=Copy(a,1,Length(a)-1);
  109. Val(a,r,q);
  110. stringtonumber:=r;
  111. END;
  112. FUNCTION rval(st:STRING):real;
  113. VAR d:INTEGER;
  114.     f:real;
  115. BEGIN
  116. Val(st,f,d);
  117. rval:=f;
  118. END;
  119.  
  120. FUNCTION rstr(r:real):STRING;
  121. VAR d:INTEGER;
  122.     f:STRING;
  123. BEGIN
  124. Str(r,f);
  125. rstr:=f;
  126. END;
  127.  
  128. FUNCTION ival(st:STRING):INTEGER;
  129. VAR d:INTEGER;
  130.     f:INTEGER;
  131. BEGIN
  132. Val(st,f,d);
  133. ival:=f;
  134. END;
  135.  
  136. FUNCTION istr(r:INTEGER):STRING;
  137. VAR d:INTEGER;
  138.     f:STRING;
  139. BEGIN
  140. Str(r,f);
  141. istr:=f;
  142. END;
  143.  
  144. FUNCTION toupper(st:STRING):STRING;
  145. VAR q:BYTE;
  146.     s:STRING;
  147.     dn,up:STRING;
  148. BEGIN
  149. DN:='abcdefghijklmnopqrstuvwxyzèéà';
  150. up:='ABCDEFGHIJKLMNOPQRSTUVWXYZEEA';
  151. s:='';
  152. FOR q:=1 TO Length(st) DO IF Pos(st[q],dn)<>0 THEN s:=s+up[Pos(st[q],dn)] ELSE s:=s+st[q];
  153. toupper:=s;
  154. END;
  155.  
  156. FUNCTION tolower(st:STRING):STRING;
  157. VAR q:BYTE;
  158.     s:STRING;
  159.     up,dn:STRING;
  160. BEGIN
  161. DN:='abcdefghijklmnopqrstuvwxyzèéà';
  162. up:='ABCDEFGHIJKLMNOPQRSTUVWXYZEEA';
  163. s:='';
  164. FOR q:=1 TO Length(st) DO IF Pos(st[q],up)<>0 THEN s:=s+dn[Pos(st[q],up)] ELSE s:=s+st[q];
  165. tolower:=s;
  166. END;
  167.  
  168. FUNCTION from(st:STRING;x:BYTE):STRING;
  169. BEGIN
  170. from:=Copy(st,x,Length(st)-x);
  171. END;
  172.  
  173. FUNCTION right(st:STRING;x:BYTE):STRING;
  174. BEGIN
  175. right:=Copy(st,Length(st)-x,x);
  176. END;
  177.  
  178. FUNCTION left(st:STRING;x:BYTE):STRING;
  179. BEGIN
  180. left:=Copy(st,1,x);
  181. END;
  182.  
  183. FUNCTION  spc(w:BYTE):STRING;
  184. VAR qqq:STRING;
  185.     q:BYTE;
  186. BEGIN
  187. qqq:='';
  188. FOR q:=1 TO w DO qqq:=qqq+' ';
  189. spc:=qqq;
  190. END;
  191. FUNCTION xerase(nom:STRING):BOOLEAN;
  192. VAR f:FILE;
  193. BEGIN
  194. xerase:=TRUE;
  195. Assign(f,nom);
  196. {$i-}Rewrite(f,1);{$i+} IF IOResult<>0 THEN xerase:=FALSE;
  197. Close(f);
  198. Erase(f);
  199. END;
  200. FUNCTION xrename(nom,nom2:STRING):BOOLEAN;
  201. VAR f:FILE;
  202. BEGIN
  203. xrename:=TRUE;
  204. Assign(f,nom);
  205. {$i-}Reset(f,1);{$i+} IF IOResult<>0 THEN xrename:=FALSE;
  206. Close(f);
  207. Rename(f,nom2);
  208. END;
  209. FUNCTION xcopy(nom,nom2:STRING):BOOLEAN;
  210. VAR f,f1:FILE;
  211.     buff:ARRAY[0..4096] OF BYTE;
  212.     lng:LongInt;
  213. PROCEDURE one;
  214. BEGIN
  215. BlockRead(f,buff,lng);
  216. BlockWrite(f1,buff,lng);
  217. lng:=0;
  218. END;
  219. PROCEDURE two;
  220. BEGIN
  221. BlockRead(f,buff,4095);
  222. BlockWrite(f1,buff,4095);
  223. lng:=lng-4095;
  224. END;
  225.  
  226. BEGIN
  227. xcopy:=TRUE;
  228. Assign(f,nom);
  229. {$i-}Reset(f,1);{$i+} IF IOResult<>0 THEN xcopy:=FALSE;
  230. Assign(f1,nom2);
  231. {$i-}Reset(f,1);{$i+} IF IOResult<>0 THEN xcopy:=FALSE;
  232. lng:=FileSize(f);
  233. REPEAT
  234. IF lng<4095 THEN one ELSE two;
  235. UNTIL lng<1;
  236. Close(f);
  237. Close(f1);
  238. END;
  239.  
  240. FUNCTION exist(nom:STRING):BOOLEAN;
  241. VAR tttx:FILE;
  242. BEGIN
  243. Assign(tttx,nom);
  244. {$i-}Reset(tttx,1);{$i+}
  245. exist:=TRUE;
  246. IF IOResult<>0 THEN exist:=FALSE;
  247. END;
  248. END.
  249.